package com.eduadmin.service;

import com.eduadmin.entity.Score;
import com.eduadmin.entity.TeachScore;

import java.util.List;
import java.util.Map;
/**
 * 基础数据-“年级成绩表”业务接口
 * */
public interface IScoreService {
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：批量导入成绩
     * 参数：
     **/
    void addScores(Map<String, Object> maps);
    /**
     * Author@zlc
     *使用角色：管理员。
     * 功能模块：数据维护-管理统计报表
     * 功能：从指定的年级成绩表中获取满足条件的学生成绩记录。
     * 参数：年级成绩表，学期，考试，分类
     **/
    List<Score> getAllScoreByParam(String gradeDatatableName, String semesterName, String examName, String categoryName);
    /**
     * Author@zlc
     *使用角色：管理员。
     * 功能模块：数据维护-管理统计报表
     * 功能：(中位数统计查询专用)从指定的年级成绩表中返回满足条件的所有记录（降序排列），条件增加了两个：班级名称和学科英文名称。
     * 参数：年级成绩表，学期，考试，分类，班级名称，学科英文名称
     **/
    List<Score> getTeamCourseScoreByParam(String gradeDatatableName, String semesterName, String examName, String categoryName, String teamName, String courseEnName);
     /**
      * Author@zlc
      * 使用角色：教师。
      * 功能模块：数据查询-查询学生成绩。
      * 功能：（带分页条件）从指定的年级成绩表中返回满足条件的所有记录，返回记录列表用于dataGrid。查询条件：年级数据表名，年级，班级名称，学期，考试，学科。
      * 参数：String gradeDatatableName, String gradeName,String teamName,String semesterName,String examName,String courseEnName
      **/
    List<TeachScore> getTeachScoreByParam(Map<String,Object> paraMap);
    /**
     * Author@zlc
     * 使用角色：教师。
     * 功能模块：数据查询-查询学生成绩
     * 功能：（不带分页条件）从指定的年级成绩表中返回满足条件的所有记录“条数”。条件：年级数据表名，年级，班级名称，学期，考试，学科。
     * 参数：String gradeDatatableName, String gradeName,String teamName,String semesterName,String examName,String courseEnName
     **/
    int getTeachScoreNumberByParam(Map<String,Object> paraMap);
    /**
     * Author@zlc
     * 使用角色：教师。
     * 功能模块：数据查询-查询学生成绩
     * 功能：（不带分页条件）从指定的年级成绩表中返回满足条件的所有记录。条件：年级数据表名，年级，班级名称，学期，考试，学科。
     * 参数：String gradeDatatableName, String gradeName,String teamName,String semesterName,String examName,String courseEnName
     **/
    List<TeachScore> getTeachScoreForExportByParam(Map<String, Object> paraMap);
    /**
     * Author@zlc
     * 使用角色：学生。
     * 功能模块：数据查询-查询成绩
     * 功能：从给定的“年级成绩表名称”中查找到满足（学生身份证号）的所有记录。
     * 参数：String gradeDatatableName, String studentIdCard
     **/
    List<Score> getStudentOwnScoreByParam(Map<String,Object> paraMap);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：判断学生成绩的唯一性
     * 参数：
     **/
    Score getScoreUnique(Map<String, Object> maps);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：获取所有
     * 参数：
     **/
    List<Score> getAllScores(Map<String, Object> paraMap);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：获取总数
     * 参数：
     **/
    Long getAllScoreTotal(Map<String, Object> paraMap);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：获取教师任教学科成绩
     * 参数：
     **/
    List<TeachScore>  getTeachScores(Map<String, Object> paraMap);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：获取查询的学生成绩以导出
     * 参数：
     **/
    List<Score> exportQueryStudentScores(Map<String, Object> paraMap);
    /**
     * Author@hgm
     * 使用角色：管理员。
     * 功能模块：数据维护-导入基础数据
     * 功能：更新学生成绩
     * 参数：
     **/
    void updateStudentScore(Map<String, Object> maps);
    /**
     * Author@hgm
     *      * 使用角色：管理员。
     *      * 功能模块：数据维护-导入基础数据
     *      * 功能：删除学生成绩
     * 参数：
     **/
    long deleteStudentScore(Map<String, String> paraMap);

}
